package com.cloud.drore.eboss.supplier.service;

import com.cloud.drore.eboos.common.base.PagePo;
import com.cloud.drore.eboos.common.base.ResultMessage;
import com.cloud.drore.eboos.common.entity.supplier.ProductRelation;
import com.cloud.drore.eboos.common.entity.supplier.po.CombinationProductQueryPo;
import com.cloud.drore.eboos.common.entity.supplier.po.TicketQueryPo;
import com.cloud.drore.eboos.common.entity.supplier.vo.CombinationProductVo;
import com.cloud.drore.eboos.common.entity.supplier.vo.TicketAllVo;
import com.cloud.drore.eboos.exception.BusinessException;
import com.cloud.drore.eboss.supplier.entity.*;
import com.cloud.drore.eboss.supplier.entity.vo.CombProSupplierVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 浙江卓锐科技股份有限公司 版权所有  Copyright 2018<br>
 *
 * @Description: <br>
 * @Project: eboos <br>
 * @CreateDate: Created in 2018/1/8 14:46 <br>
 * @Author: <a href="575842778@qq.com">郑永涛</a>
 */
public interface ICombinationProductService {

    ResultMessage updateCombinationProduct(CombinationProduct combinationProduct, List<CombinationProductPrice> prices,
                                           List<CombinationProductStock> stocks) throws BusinessException;

    CombinationProductVo selectCombinationProductById(Long id) throws BusinessException;

    CombProSupplierVo selectCombinationProductByIdSupplier(Long id);

    ResultMessage saveCombinationProduct(CombinationProduct combinationProduct, List<CombinationProductPrice> price,
                                         List<CombinationProductStock> stock, List<CombinationProductRelation> combinationProductRelationList) throws BusinessException;

    ResultMessage updateStatus(Long id, String status);

    List<TicketAllVo> findProductByCombinationId(Long combinationId);

    ResultMessage rejectProduct(Long id, String status, String rejectReason);

    ResultMessage init();

    PageInfo findCombinationProductByParam(PagePo<CombinationProductQueryPo> pagePo) throws BusinessException;

    PageInfo findCombinationProductByParamDealer(PagePo<CombinationProductQueryPo> pagePo) throws BusinessException;

    PageInfo findCombinationProductByParamSupplier(PagePo<CombinationProductQueryPo> pagePo) throws BusinessException;

    void updateExpiredCombinationProduct();

    PageInfo findTicketByParamWithoutExpired(PagePo<TicketQueryPo> pagePo) throws BusinessException;

    ResultMessage<ProductRelation> findAllProduct() throws BusinessException;

}